<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>04_闭包的生命周期</title>
</head>
<body>
<!-- 
1、产生：在嵌套内部函数定义执行完时，就产生了（不是在调用的时候）

2、死亡：在嵌套的内部函数成为垃圾对象时
-->
<script>
function fn1() {
    // 此时闭包就已经产生了（函数提升，内部函数对象已经被创建了）
    var a = 2
    function fn2() {
        a++
        console.log(a)
    }
    return fn2;
}

var f = fn1()
f() // 3
f() // 4

f = null // 闭包死亡，包含闭包的函数对象成为垃圾对象
</script>
</body>
</html>